﻿using System.Collections.Generic;
using XUCore.WeChat.Apis;

namespace XUCore.WeChat.Enterprise.Apis.Suite
{
    public class PermanentCodeApiResult : ApiResultBase
    {
        /// <summary>
        /// 企业微信永久授权码,最长为512字节
        /// </summary>
        public string permanent_code { get; set; }
        /// <summary>
        /// 代理服务商企业信息。应用被代理后才有该信息
        /// </summary>
        public Dealer_corp_info dealer_corp_info { get; set; }

        /// <summary>
        /// 授权方企业信息
        /// </summary>
        public Auth_corp_info auth_corp_info { get; set; }

        /// <summary>
        /// 授权信息。如果是通讯录应用，且没开启实体应用，是没有该项的。通讯录应用拥有企业通讯录的全部信息读写权限
        /// </summary>
        public Auth_info auth_info { get; set; }

        /// <summary>
        /// 授权管理员的信息，可能不返回
        /// </summary>
        public Auth_user_info auth_user_info { get; set; }

        /// <summary>
        /// 安装应用时，扫码或者授权链接中带的state值。详见state说明
        /// </summary>
        public string state { get; set; }
    }

    public class Dealer_corp_info
    {
        /// <summary>
        /// 代理服务商企业微信id
        /// </summary>
        public string corpid { get; set; }

        /// <summary>
        /// 代理服务商企业微信名称
        /// </summary>
        public string corp_name { get; set; }

    }
    /// <summary>
    /// 授权方企业信息
    /// </summary>
    public class Auth_corp_info
    {
        /// <summary>
        /// 授权方企业微信id
        /// </summary>
        public string corpid { get; set; }

        /// <summary>
        /// 授权方企业名称，即企业简称
        /// </summary>
        public string corp_name { get; set; }

        /// <summary>
        /// 授权方企业类型，认证号：verified, 注册号：unverified
        /// </summary>
        public string corp_type { get; set; }

        /// <summary>
        /// 授权方企业方形头像
        /// </summary>
        public string corp_square_logo_url { get; set; }

        /// <summary>
        /// 授权方企业用户规模
        /// </summary>
        public int corp_user_max { get; set; }

        /// <summary>
        /// 授权方企业的主体名称(仅认证或验证过的企业有)，即企业全称。企业微信将逐步回收该字段，后续实际返回内容为企业名称，即auth_corp_info.corp_name。
        /// </summary>
        public string corp_full_name { get; set; }

        /// <summary>
        /// 认证到期时间
        /// </summary>
        public int verified_end_time { get; set; }

        /// <summary>
        /// 企业类型，1. 企业; 2. 政府以及事业单位; 3. 其他组织, 4.团队号
        /// </summary>
        public int subject_type { get; set; }

        /// <summary>
        /// 授权企业在微信插件（原企业号）的二维码，可用于关注微信插件
        /// </summary>
        public string corp_wxqrcode { get; set; }

        /// <summary>
        /// 企业规模。当企业未设置该属性时，值为空
        /// </summary>
        public string corp_scale { get; set; }

        /// <summary>
        /// 企业所属行业。当企业未设置该属性时，值为空
        /// </summary>
        public string corp_industry { get; set; }

        /// <summary>
        /// 企业所属子行业。当企业未设置该属性时，值为空
        /// </summary>
        public string corp_sub_industry { get; set; }

    }
    /// <summary>
    /// 应用对应的权限
    /// </summary>
    public class Privilege
    {
        /// <summary>
        /// 权限等级。
        /// 1:通讯录基本信息只读
        /// 2:通讯录全部信息只读
        /// 3:通讯录全部信息读写
        /// 4:单个基本信息只读
        /// 5:通讯录全部信息只写
        /// </summary>
        public int level { get; set; }

        /// <summary>
        /// 应用可见范围（部门）
        /// </summary>
        public List<int> allow_party { get; set; }

        /// <summary>
        /// 应用可见范围（成员）
        /// </summary>
        public List<string> allow_user { get; set; }

        /// <summary>
        /// 应用可见范围（标签）
        /// </summary>
        public List<int> allow_tag { get; set; }
    }



    public class Shared_from
    {
        /// <summary>
        /// 
        /// </summary>
        public string corpid { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int share_type { get; set; }
    }



    public class AgentItem
    {
        /// <summary>
        /// 授权方应用id
        /// </summary>
        public int agentid { get; set; }

        /// <summary>
        /// 授权方应用名字
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 授权方应用方形头像
        /// </summary>
        public string round_logo_url { get; set; }

        /// <summary>
        /// 授权方应用圆形头像
        /// </summary>
        public string square_logo_url { get; set; }

        /// <summary>
        /// 授权模式，0为管理员授权；1为成员授权
        /// </summary>
        public int auth_mode { get; set; }

        /// <summary>
        /// 是否为代开发自建应用
        /// </summary>
        public string is_customized_app { get; set; }

        /// <summary>
        /// 来自第三方应用接口唤起,仅通过第三方应用添加自建应用 获取授权链接授权代开发自建应用时，才返回该字段
        /// </summary>
        public string auth_from_thirdapp { get; set; }

        /// <summary>
        /// 应用对应的权限
        /// </summary>
        public Privilege privilege { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public Shared_from shared_from { get; set; }

    }


    /// <summary>
    /// 授权信息。如果是通讯录应用，且没开启实体应用，是没有该项的。通讯录应用拥有企业通讯录的全部信息读写权限
    /// </summary>
    public class Auth_info
    {
        /// <summary>
        /// 授权的应用信息，注意是一个数组，但仅旧的多应用套件授权时会返回多个agent，对新的单应用授权，永远只返回一个agent
        /// </summary>
        public List<AgentItem> agent { get; set; }

    }

    /// <summary>
    /// 授权管理员的信息，可能不返回
    /// </summary>
    public class Auth_user_info
    {
        /// <summary>
        /// 授权管理员的userid，可能为空
        /// </summary>
        public string userid { get; set; }

        /// <summary>
        /// 授权管理员的open_userid，可能为空
        /// </summary>
        public string open_userid { get; set; }

        /// <summary>
        /// 授权管理员的name，可能为空
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 授权管理员的头像url，可能为空
        /// </summary>
        public string avatar { get; set; }
    }
}